#include <stdio.h>

void my_print(int i)
{
    printf("i = %d\r\n", i);
}

void compare(int i)
{
    if (i > 5)
        printf("i = %d, NOT less than 5\r\n", i);
    else
        printf("i = %d, less than 5\r\n", i);
}

#if 0   // 两种方式定义的函数指针，效果一样
    typedef void (*FUNC)(int);
    FUNC signal(int i, FUNC func)
    {
        func(i);
        return compare;
    }
#else
    void (*signal(int i, void (*func)(int)))(int)   
    {
        func(i);
        return compare;
    }
#endif

int main(void)
{
    signal(6, my_print)(7);
    return 0;
}